MySQL多表查询合并结果union all,内连接查询

您所在的位置:网站首页 hive uinon 字段名不同 MySQL多表查询合并结果union all,内连接查询

MySQL多表查询合并结果union all,内连接查询

#MySQL多表查询合并结果union all,内连接查询| 来源: 网络整理| 查看: 265

OR、in和union all 查询效率到底哪个快。

网上很多的声音都是说union all 快于 or、in,因为or、in会导致全表扫描,他们给出了很多的实例。

但真的union all真的快于or、in?本文就是采用实际的实例来探讨到底是它们之间的效率。

1:创建表,插入数据、数据量为1千万【要不效果不明显】。

Sql代码  收藏代码 drop table if EXISTS BT;   create table BT(       ID int(10) NOT NUll,       VName varchar(20) DEFAULT '' NOT NULL,       PRIMARY key( ID )   )ENGINE=INNODB;  

 该表只有两个字段 ID为主键【索引页类似】,一个是普通的字段。(偷懒就用简单的表结构呢)

向BT表中插入1千万条数据

这里我写了一个简单的存储过程【所以你的mysql版本至少大于5.0,俺的版本为5.1】,代码如下。

注意:最好

    INSERT INTO BT ( ID,VNAME )  VALUES( i, CONCAT( 'M', i ) );---1

    修改为

   INSERT INTO BT ( ID,VNAME )  VALUES( i, CONCAT( 'M', i, 'TT' ) );---2

   修改原因在

   非索引列及VNAME使用了联合进行完全扫描请使用1 。

   非索引列及VNAME使用了全表扫描请使用2 。

 

Sql代码  收藏代码 DROP PROCEDURE IF EXISTS test_proc;   CREATE PROCEDURE test_proc()   BEGIN   declare i int default 0;   set autocommit = 0;   while i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3